Method of congestion control for wireless messaging systems

ABSTRACT

The present invention provides a method for congestion control at multiple levels in a wireless messaging system. Unlike previous systems that only responded to congestion in one way, the present invention responds to each incoming message packet to a receiving component with a reply that indicates: (1) whether or not the message packet has been accepted; (2) the level or function at which the congestion is occurring for rejected message packets; and (3) a specific delay time that the sender should wait before sending the next message packet. The delay time may be varied in order to control the rate of information flow. In this way, if an area becomes congested and then clears, a “slow start” technique may be used; that is, the rate can be turned back up slowly rather than just “opening the floodgates.” Temporary congestion queues in the sender are used to hold message packets addressed to congested areas.

RELATED APPLICATIONS

[0001] The benefit of the filing dates of provisional applications Ser.No. 60/021,617, filed on Jul. 12, 1996, and Ser. No. 60/022,045, filedon Jul. 22, 1996, is hereby claimed for this application under 35 U.S.C.§ 19(e).

FIELD OF THE INVENTION

[0002] The present invention relates to wireless messaging systems ingeneral, and in particular to methods of congestion control for wirelessmessaging systems.

BACKGROUND OF THE INVENTION

[0003] Wireless messaging systems such as paging systems have undergonesignificant changes in the past twenty years. Early paging units weresimple radio receivers that beeped upon receipt of a paging signal froma paging service. The user wearing the paging unit would then take somepredetermined action upon receipt of the paging signal, such as callingthe paging service by conventional telephone for a message. The user hadno other choice in how to respond when the paging signal was received,because the paging signal did not contain any information concerning thenature of other action to be taken.

[0004] With advancements in paging technology, it became possible tosend message data to a paging unit. This message data can includealphanumeric messages that inform the recipient of the appropriateaction to take. For example, a paging message may tell the user to callhome, call the office, stop by the dry cleaners, etc. Further,advancements have increased the amount of information being sent topaging devices. For example, while a numeric page typically containsonly 128 bits of information, a digitized voice message may contain10,000 bits.

[0005] As wireless messaging technology advances, future messagingdevices will be able to receive and transmit even more information. Asthe capabilities of wireless messaging systems and the number of usershave increased, signal interference and congestion have become more of aconcern. Congestion is defined as the inability of all or part of thewireless messaging network to process messages because of a lack ofresources, such as CPU processing ability, RAM memory, or the bandwidthof the medium. When congestion occurs, performance of the wirelessmessaging system tends to degrade sharply.

[0006] The methods of dealing with signal congestion in wirelessmessaging systems are controlled by the particular set of protocols thatgovern communications between components within the wireless messagingsystem. In general, protocols are sets of rules that govern the form,format, data content and information flow sent over communication linksthat connect different devices. Wireless messaging systems use a widerange of protocols to provide communications between differentcomponents.

[0007] One of the most basic methods of congestion control used byseveral protocols is the “stop-and-wait” method. The stop-and-waitmethod requires that a sending component be able to send messages orother data to a receiving component, and that the receiving component beable to send back an acknowledgment signal to the sending component thatindicates that the message has been successfully received and accepted.The sending component is designated as a “sender” and the receivingcomponent is designated as a “receiver.” This method is called“stop-and-wait” because after sending a message, the sender stops andwaits for the acknowledgment that the message has been successfullyreceived and accepted before it sends another message. Thus, there is atmost a single outstanding message that has been sent at any given time.This method is inefficient because the wireless messaging network mayhave the capacity to send more than one message at any given time.Protocols using more advanced methods allow the sender to send severalmessages before it receives an acknowledgment.

[0008] A more advanced method for congestion control is the “slidingwindow” method, which is described in detail in Computer Networks, A.Tanenbaum, 1989. The sliding window method is the basis of many standardnetwork protocols, such as TCP and SPX. In one type of sliding windowmethod, the sender assigns a sequence number to each message, rangingfrom 0 up to some maximum number. The sender is designated a maximumnumber of sent messages that it is allowed to have outstanding at anygiven time. This maximum number determines the size of the sendingwindow. The sending window contains the list of sequence numberscorresponding to messages that have been sent by the sender but not yetacknowledged by the receiver. Once the sending window contains themaximum number of sequence numbers that it is allowed to hold, then thesender cannot send additional messages. When an acknowledgment arrivesfrom the receiver for a sequence number in the sending window, then thewindow clears the sequence number and the window can accept oneadditional sequence number, thus allowing the sender to send out thenext message.

[0009] Since messages corresponding to sequence numbers currently withinthe sending window may ultimately be lost or damaged in transit, thesender must keep all those messages in its memory for possibleretransmission. Thus, the sender must have a buffer large enough to holdas many messages as there are sequence numbers in its window. The senderalso records the time at which each message is sent, and if the senderdoes not receive an acknowledgment before a “time-out period” elapses,it retransmits the message.

[0010] The receiver also maintains a receiving window, corresponding tothe number of out-of-order sequence numbers it is permitted to accept.Any messages with sequence numbers falling outside the receiving windoware discarded without comment. A receiver window with a size of “1”means that the receiver only accepts messages in their consecutive orderas they were designated by their sequence numbers. For larger receiverwindows, messages may be received out of order up to the maximum numberallowed by the receiver window.

[0011] While protocols using the sliding window method do implement somelevel of congestion control, they have a variety of disadvantages. Oneof the major disadvantages is that the sender window receives noindication of the status of a message until it receives anacknowledgment indicating that the message has been successfullyreceived and accepted. Thus, whether congestion is present or some otherproblem exists, the only information as to the problem that the senderhas is that it is not receiving acknowledgments in response to sentmessages.

[0012] Another disadvantage of protocols using the sliding window methodis that the receiver window does not respond any differently when thereis only one empty space in the window than when there are many. Thus,regardless of how fast the receiver window is filling up, or how closethe receiver window is to being full, as long as it can continue toaccept incoming messages, it sends back only a simple acknowledgment tothe sender.

[0013] An additional disadvantage of protocols using the sliding windowmethod is that the sender and receiver windows can only indicate generalcongestion at one place in the paging network, namely, at the receiver.In other words, even if there are several levels or types of functionsthat the receiver performs, congestion in any one of them will cause thesame result, namely, that no acknowledgment signals will be sent inresponse to incoming messages to the receiver.

[0014] An additional disadvantage of protocols using either thestop-and-wait or sliding window methods is that once congestion occurs,the flow of messages is completely stopped. Also, since the sender thendoes not receive any type of acknowledgment in response to the messagesit has sent, it may try to resend them, which only further contributesto the congestion in the network.

[0015] The present invention is directed to providing a method ofcongestion control for overcoming the foregoing and other disadvantages.More specifically, the present invention is directed to a method ofcongestion control whereby a sender receives a reply indicating the typeof congestion that is occurring and a time interval that the sendershould wait before sending additional messages.

SUMMARY OF THE INVENTION

[0016] A method for controlling congestion in a wireless messagingsystem is provided. The messaging system includes nodes between whichinformation or commands are transferred. The information may be in theform of message packets. A node that is sending message packets isdesignated as a sender, and a node that is receiving message packets isdesignated as a receiver. The receiver node includes at least onecomponent required to process the message packets. A list of componentsto which the message packet will be sent is included in the address ofthe message packet.

[0017] In accordance with one aspect of the invention, when the sendersends a message packet to the receiver, the receiver responds with areply that specifies: whether or not the message packet has beenaccepted; whether any components in the receiver to which the messagewas routed are congested; and, if so, the delay time the sender shouldwait between sending additional message packets to the congestedcomponent.

[0018] In accordance with another aspect of the invention, when thesender receives a reply indicating that there is congestion in apreviously uncongested component, the sender creates a temporarycongestion queue to hold the message packets addressed to the congestedcomponent. The temporary congestion queue includes a timer with a settime for determining the delay between sending message packets to thecongested component. Once the temporary congestion queue is created, thesender examines the addresses of the message packets before sending themto the receiver, and message packets addressed to a congested componentare placed in the temporary congestion queue. If a sender receives areply stating that the message was rejected because of congestion, themessage is placed in the temporary congestion queue and sent again aftera delay specified by the receiver. If a sender receives a reply statingthat the message was accepted by a congested receiver, the sender willwait for the delay time specified by the receiver before sending anysubsequent message. When there are no more messages in the temporarycongestion queue at the end of the delay time, or when the previouslycongested component is no longer congested, the temporary congestionqueue is ended.

BRIEF DESCRIPTION OF THE DRAWINGS

[0019] The foregoing aspects and many of the attendant advantages ofthis invention will become more readily appreciated as the same becomesbetter understood by reference to the following detailed description,when taken in conjunction with the accompanying drawings, wherein:

[0020]FIG. 1 is a block diagram of a wireless communication system;

[0021]FIG. 2 is a block diagram of the messaging switch system of FIG.1;

[0022]FIG. 3 is a block diagram of the output messaging switch for theone-way paging system of FIG. 1;

[0023]FIG. 4 is a block diagram of the output messaging switch for thetwo-way paging system of FIG. 1;

[0024]FIG. 5A is a flow chart of a message sending routine of a sendingcomponent;

[0025]FIG. 5B is a flow chart of a message receiving and reply routineof a receiving component;

[0026]FIG. 5C is a flow chart of a reply receiving routine of a sendingcomponent;

[0027]FIG. 5D is a message sending routine of a temporary congestionqueue;

[0028]FIG. 6 is a time line illustrating messages and replies that aresent and received between a home messaging switch and an outputmessaging switch; and

[0029]FIG. 7 is a timing diagram for the messages and replies of FIG. 6.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0030] The major components of a wireless communication system 10 areillustrated in FIG. 1. One of the most common types of wirelessmessaging systems is a paging system. A common type of information thatpasses through paging systems are message packets that are entered by auser to be broadcast to a particular paging unit. Message packets ofthis type are entered into the wireless communication system 10 via apublic switched telephone network 20 through either a standard telephone16 or a computer 18. The message packets are then transferred to aninput messaging switch 22 that is an input component to a messagingswitch system 21. Message packets are then passed via a communicationlink 50 through an interswitch protocol network 24 and via acommunication link 51 to a home messaging switch 23 that containsinformation specific to the paging unit for which the message packet isdestined. Communication links 50 and 51 may be either simple wires,leased telephone lines, microwave links, satellite links, or any othersuitable communication path.

[0031] The message packet is then transferred via communication link 51back through the interswitch protocol network 24 to one of the twooutput messaging switches 36 or 44, via communication links 52 or 53,respectively. Output messaging switches 36 and 44 are output componentsof the messaging switch system 21. Message packets from output messagingswitch 36 are sent via a communication link 56 to a one-way transmittingsystem 30. Message packets sent to a one-way transmitting system 30 arebroadcast via transmitting stations 38 and 40 to paging units withintheir geographical region. Message packets from output messaging switch44 are sent to a two-way transmitting system 32 via a communication link58. Message packets sent to a two-way transmitting system 32 are sentthrough a base station network 46 and then selectively sent viacommunication links 62 or 64 to base stations 48 or 49, respectively, tobe broadcast. Base stations 48 and 49 are capable of both broadcastingmessage packets and receiving signals from remote paging units.

[0032] One feature of the two-way paging system 32 that is not availablein the one-way paging system 30 is the use of a “locate” signal. Thespecific geographical area in which a particular paging unit is locatedmay be determined by simultaneously broadcasting a unique “locate”signal from the base stations 48 and 49. Once the paging unit thatresponds to the unique locate signal has received the signal, it sendsback an “acknowledge” signal to the base stations 48 and 49. One or bothof the base stations 48 and 49 receive the acknowledge signal and sendinformation as to the strength of the signal back to the outputmessaging switch 44 for analysis in determining which base station isclosest to the paging unit. Then the message packet for that paging unitmay be broadcast from the closest base station. As will be described inmore detail below, the use of a single base station to broadcastmessages to paging units may require another level of congestion controlthan is necessary in one-way transmitting systems.

[0033] The protocols used by the messaging switch system 21 govern howcongestion is controlled for messages being sent between the messagingswitches 22, 23, 36, and 44. While the messages being sent will often bereferred to as “message packets”, or simply “messages”, in thisapplication, they may actually be any type of application protocol dataunit (APDU), which is a “packet” form in which data or commands may besent between any of the messaging switches. The messaging switch system21 includes the input messaging switch 22 as an input device, the homemessaging switch 23 as an information storage device, the outputmessaging switches 36 and 44 as output devices, and the interswitchprotocol network 24 which connects all of the messaging switches. In thepreferred embodiment, the input messaging switch 22 and the homemessaging switch 23 may both be aspects of the same physical piece ofequipment.

[0034] Key components in each messaging switch are assigned a “node”designation in the messaging switch system 21. A node may represent anynumber of components, i.e., in an input messaging switch, a node mayrepresent a group of incoming telephone lines; in a home messagingswitch a node may represent a memory storage area for a particularpaging unit; and in an output messaging switch a node may representtransmitters in a particular geographic region. Each node is given aunique identification number which the messaging switch system 21 thenuses to identify the location of each key component in the network.

[0035] As shown in FIG. 2, input messaging switch 22 includes nodes N1,N2 and N3; home messaging switch 23 includes nodes N4, N5 and N6; outputmessaging switch includes node N7; and output messaging switch 44includes node N8. In actual practice, any messaging switch may includeany number of nodes. Each node includes a memory area and a clock; thus,nodes N1 to N8 include memories ME1 to ME8, and clocks CL1 to CL8,respectively. As will be described in more detail below, the memoriesand clocks may be used for congestion control. Specifically, congestionqueues may be created in the memory areas. While the use of the nodes isdescribed below with reference to a message packet being sent from thePSTN 20 through the paging switch network to a particular paging unit,it should be understood that different types of message packets or APDUsmay be sent through different paths and through any order of nodes.

[0036] Nodes N1, N2 and N3 are included in input messaging switch 22 andmay each represent unique groups of input lines from the public switchedtelephone network 20. The input messaging switch 22 accepts messagesfrom the public switched telephone network 20 and then, as describedbelow, sends the messages to the appropriate home messaging switch 23that is assigned to the particular paging unit that is to be paged.

[0037] Message packets from the node N1, N2 or N3 of input messagingswitch 22 are sent through interswitch protocol network 24 to node N4,N5 or N6 in home messaging switch 23. Nodes N4, N5 and N6 are home nodesthat may generally represent information storage areas required for eachindividual paging unit. All information sent to and from the paging unitpasses through the paging unit's home node. The home node storesincoming message packets and subsequently sends the messages throughoutput switches to the paging unit, as described below. The home nodealso keeps the database record regarding a paging unit, includinginformation as to the geographical area in which the message packets forthat paging unit are to be broadcast.

[0038] Message packets from the node N4, N5 or N6 of home messagingswitch 23 are sent through interswitch protocol network 24 to node N7 orN8 in output messaging switch 36 or 44, respectively. Nodes N7 and N8may generally be associated with certain transmitters or geographicalareas covered by the transmitters. Thus, nodes N7 and N8 may representtransmitters for a particular area of coverage, such as a particularcity, and message packets to be broadcast in that city would be sent tothat node.

[0039] For purposes of illustrating the congestion control methods ofthe present invention, nodes N7 and N8 in FIG. 2 are also shown tocontain certain applications, channels and points. Applications,channels and points are considered to be “components” within each of thenodes. A component may be any type of element within the nodes,including software applications and similar non-physical entities whichact to process the message packets or commands. In some embodiments thenodes themselves may be considered to be a type of component. Node N7includes application AP1 and channels CH1 and CH2, and node N8 includesapplication AP2, channels CH3 and CH4, and points P1 and P2. “Channels”refer to radio frequency channels. Once a message packet has beenreceived at a node, it may be broadcast from the transmitters associatedwith the node over one or more channels. Thus each node may have severalradio frequency channels that it can use to broadcast message packetsfrom its transmitters. In addition to broadcasting, other functions mayalso be performed at the nodes, such as looking up information in adatabase at the node. Such functions are called “applications.” Inaddition, in the two-way transmitting system 32, the message packet maybe designated to go to a particular base station 48 or 49 (FIG. 1). Thebase stations 48 and 49 may be represented as “points” in the node. Aswill be described below, a point generally refers to any component thatis unknown to the sender at the time a message packet is sent. Thus, insummary, when a message packet is sent by a home messaging switch to anoutput messaging switch, the message packet may require use of aparticular node, application, channel and/or point.

[0040] The above components in the output messaging switches are relatedto some of the types of congestion that can occur in the outputmessaging switches. While the types of congestion and methods ofcongestion control are described below with reference to the outputmessaging switches, it should be understood that similar types ofcongestion may occur in any of the messaging switches, and that themethods of congestion control described below may be equally applied toany similar types of congestion. The object of congestion control is tolimit the amount of data being sent to the part of the paging networkthat is congested. FIGS. 3 and 4 conceptually illustrate some of thecommunication paths for which congestion can occur. The communicationpaths shown in FIGS. 3 and 4 are for illustrative purposes only and donot necessarily represent actual physical connections.

[0041] As shown in FIG. 3, a communication line 70 reaches node N7 fromcommunication link 52. From line 70, a line 72 reaches application AP1.From application AP1, lines 74 and 76 reach channels CH1 and CH2,respectively. As shown in FIG. 4, a communication line 80 reaches nodeN8 from communication link 54. From line 80, a line 82 reachesapplication AP2. From application AP2, lines 84 and 86 reach channelsCH3 and CH4, respectively. From channels CH3 and CH4, lines 91 and 94reach point P1 and lines 92 and 95 reach point P2.

[0042] Four types of congestion can be explained with reference to FIGS.3 and 4, including: association, application, channel and pointcongestion. Association congestion occurs when an entire node iscongested, such as when all of the components in a node are congested orsome other problem exists so that the node cannot accept additionalmessages. Association congestion at node N7 or N8 would preventadditional messages from reaching the nodes from line 70 or 80,respectively. Application congestion occurs when an application iscongested, such as would prevent additional messages from reaching theapplication AP1 or AP2 from line 72 or 82, respectively. Channelcongestion occurs when a channel is congested, such as would preventadditional messages from reaching the channel CH1, CH2, CH3, or CH4 fromline 74, 76, 84 or 86, respectively. Point congestion occurs when apoint is congested, such as would prevent additional messages fromreaching the point P1 or P2 from lines 91 and 94 or 92 and 95,respectively. As will be described below, point congestion is differentfrom the other types of congestion.

[0043] According to the congestion control methods of the presentinvention, the nodes in the output messaging switches 36 and 44 respondto each incoming message sent by a node in home messaging switch 23 witha reply that indicates: (1) whether or not the message has beenaccepted; (2) the component at which the congestion is occurring ifcongestion is indicated, and (3) a specific delay time that the node inthe home messaging switch 23 should wait before sending the nextmessage. The delay time may be varied in order to control the rate ofinformation flow. In this way, if a component becomes congested and thenclears, a “slow start” technique may be used; that is, the rate can beturned back up slowly rather than just “opening the floodgates.” Whenthe home messaging switch 23 receives a reply from an output messagingswitch that indicates that a component is congested, it creates atemporary congestion queue for messages that require use of thatcomponent. For example, if a message was sent from node N4 in homemessaging switch 23 to node N7 in output messaging switch 36 and was tobe broadcast on channel CH1, but then a reply came back indicating thatchannel CH1 was congested, then a temporary congestion queue would becreated for channel CH1 in the memory ME4 in node N4. Then all messagesrequiring use of channel CH1 would be placed in that temporarycongestion queue.

[0044] Multiple temporary congestion queues may exist simultaneously formultiple congested components. If there is more than one congestedcomponent that the message requires use of, the message is placed in thetemporary congestion queue for the highest ranked component. The rankingof components is determined by a ranking system, such as an order of:node, application, channel and point, for the order of the highestranked components to the lowest.

[0045] A reply from an output messaging switch that indicates that apreviously congested component is no longer congested allows thetemporary congestion queue for that component to be ended. The queue isemptied by sending all of its messages and then the area in memory ME4that was allocated for the queue is de-allocated. The area in memory fora queue is also de-allocated if after the delay time no messages are inthe queue to be sent.

[0046] Messages in the temporary congestion queues are sent to thecongested components in periodic intervals, as determined by the delaytime indicated in the most recent reply message from the outputmessaging switch. The periodic intervals would be measured by the clockin the node where the temporary congestion queue exists. The clockcounts up to the set delay time between sending messages. The delay timespecified in the reply may be determined by an algorithm in thereceiving messaging switch. The algorithm may take into account multiplefactors, some of which may be: the characteristics of the particularcomponent that is congested; the rate at which performance of themessaging system degrades for increasing congestion in the component;whether there is congestion in other parts of the messaging system; andwhether previous messages have been rejected at the component due tocongestion.

[0047] Using an alternate method of congestion control, it is possibleto not include a delay time in the reply and instead have the homemessaging switch 23 use an algorithm to generate a delay time on itsown. For example, in the preferred embodiment when associationcongestion occurs such that an entire node is congested, no delay timeis included in the reply that indicates the node is congested. Instead,the home messaging switch 23 uses an algorithm that dictates that everytime a message is sent from the temporary congestion queue and isrejected, the delay time is doubled, and every time a message isaccepted, the delay time is halved. Maximum and minimum values for thedelay times are set and, when the minimum delay time is reached, thetemporary congestion queue is ended.

[0048] The preferred method of congestion control for applications,channels, and/or points is illustrated in the flow charts of FIGS. 5A,5B, 5C and 5D. While the method shown may be applied to congestionoccurring anywhere in the messaging switch system 21, for purposes ofillustration, FIGS. 5A to 5D may be taken to apply to a message packetbeing sent from node N4 in home messaging switch 23 to node N8 in outputmessaging switch 44. In FIGS. 5A to 5D, home messaging switch 23 wouldbe designated as the “sender”, and output messaging switch 44 would bedesignated as the “receiver.” Also, as described above, the “message” or“message packet” being sent may actually be any type of applicationprotocol data unit (APDU), which is a “packet” form in which data orcommands may be sent between any of the messaging switches in themessaging switch system 21.

[0049]FIG. 5A shows the message packet sending routine of the sender.After starting at a block 100, at a block 102 the routine examines theaddress of the next message packet to be sent. A message packet addressincludes the components in the receiver that will be required to beutilized for processing the message packet. For example, the address mayspecify a particular node, application and/or channel which will berequired for the message packet. Points are not included in the addressfor reasons that will be described below. Thus, the address specifies a“path” of components that the message packet will pass through.

[0050] At a decision block 104, the routine determines if the messagepacket address includes any congested components by comparing eachcomponent in the address with a list of components for which temporarycongestion queues currently exist. As will be described below,components that are known to be congested have a temporary congestionqueue created for them. If there are no congested components in theaddress, the routine continues to a block 106 where the message packetis sent to the receiver and the routine returns to block 102 to examinethe next message packet address. If one of the components in the addressis congested, then the routine continues to a block 108 where themessage packet is placed on the end of the temporary congestion queuefor the specified congested component and the routine then returns toblock 102 to examine the next message packet address.

[0051]FIG. 5B shows the message receiving and reply routine of thereceiver. After starting at a block 150, the receiver waits at a block152 for a message to be received from the sender. At a decision block154, the routine determines if there is association congestion along thepath of the message. As was described above, association congestionimplies that the entire node to which the message packet is addressed ishaving difficulty processing messages. If association congestion ispresent, then the routine proceeds to a block 156 where the congestednode is specified as part of the reply to the sender. As describedabove, in the preferred embodiment, the receiver does not designate adelay time in the case of association congestion, so from block 156 theroutine proceeds directly to a block 157 where a reply is sent to thesender indicating there is association congestion. If associationcongestion is not present at block 154, the routine proceeds to adecision block 158.

[0052] At decision block 158, the routine determines if there isapplication congestion along the path of the message. As was describedabove, application congestion implies that an application to which themessage packet is addressed is having difficulty processing messages. Ifapplication congestion is indicated, then the routine proceeds to ablock 160 where the congested application is specified as part of thereply to the sender. If application congestion is not present, theroutine proceeds to a decision block 162.

[0053] At decision block 162, the routine determines if there is channelcongestion along the path of the message by monitoring to see whatresponse is given by the receiver. As was described above, channelcongestion implies that a channel to which the message packet isaddressed is having difficulty processing messages. If channelcongestion is present, then the routine proceeds to a block 164 wherethe congested channel is specified as part of the reply to the sender.If channel congestion is not present, the routine proceeds to a decisionblock 166.

[0054] At decision block 166, the routine determines if there is pointcongestion along the path of the message. As described below, pointcongestion implies that a “point” along the messaging path that wasunknown by the sender when the message was sent is having difficultyprocessing messages. If point congestion is present, then the routineproceeds to a block 168 where the congested point is specified as partof the reply to the sender. If point congestion is not present, then theroutine proceeds to a block 170 where a reply is sent back to the senderindicating that the message packet has been accepted without congestion.

[0055] Each of the blocks 154, 158, 162, and 166 represent differentsoftware modules in the output messaging switch. The different softwaremodules handle the message as it goes “up the stack” through the blocks154, 158, 162, and 166. For example, the first software module that themessage encounters in the “node” handler at block 154, which knows howmany resources it has at its disposal. If the node is congested, it isalso the software module that forms the congestion message.

[0056] From blocks 160, 164 or 168, the routine proceeds to a block 172where the delay time that the sender should wait between sendingmessages to the congested component is determined. As described above,the delay time may be determined by an algorithm in the receiver, whichmay take into account multiple factors. The routine then proceeds to adecision block 174, where the routine determines whether the presentmessage packet from the sender should be accepted or rejected. If thepresent message packet is to be rejected, the routine continues to ablock 176 where a reply is sent back to the sender indicating that themessage packet has been rejected, the congested component, and the delaytime that the sender should wait between sending additional messagepackets to the congested component. If the present message is to beaccepted, the routine continues to a block 178 where a reply is sentback to the sender indicating that the message packet has been acceptedwith congestion, the congested component, and the delay time (ifnecessary) that the sender should wait between sending additionalmessage packets to the congested component.

[0057] Block 178 illustrates that the congestion control method of thepresent invention may begin working even before congestion actuallyoccurs. As will be described below, the receiver may have a method ofdetermining when a component is merely approaching a congested state,and thus be able to implement preventative congestion control evenbefore the component becomes congested. Thus, as shown in block 178, areply may be sent to the sender indicating that although the presentmessage packet has been accepted, congestion control should beimplemented.

[0058]FIG. 5C shows the reply receiving routine of the sender. Theroutine starts at a block 110 and then at a decision block 112determines whether the reply from the receiver indicates that congestionis occurring. If congestion is indicated, the routine proceeds to adecision block 120. If congestion is not indicated, the routine proceedsto a decision block 114.

[0059] At decision block 114, the routine determines whether a temporarycongestion queue is currently in effect for any of the components alongthe path of the message packet which caused the reply. As describedabove, the existence of a temporary congestion queue for a component inthe receiver indicates that there has previously been congestion at thatcomponent. A reply which indicates that there is no longer congestionfor that component allows the temporary congestion queue to be ended.Thus, at decision block 114, if there is no longer congestion indicatedat a previously congested component, then the routine proceeds to ablock 116 where all of the messages in the temporary congestion queueare sent without a delay time and the queue is ended at a block 136. Ifno queue exists, then the routine proceeds to block 136 where it ends.

[0060] At decision block 120 the routine determines if a temporarycongestion queue is currently in effect for the component that wasspecified as being congested by the reply message. If no temporarycongestion queue is currently in effect, the routine proceeds to a block122 where it creates a new temporary congestion queue for messagepackets addressed to the congested component. As described above, thequeue uses a timer to send out message packets at periodic intervalsaccording to a set delay time. If a queue already exists, the routineproceeds to a decision block 124 where it determines whether the delaytime indicated by the reply is the same as the delay time currentlybeing used by the queue. If the delay time is the same, the routineproceeds to a decision block 130. If the delay time is different, theroutine proceeds to a block 126 where it changes the delay time for thequeue.

[0061] When the delay time of the temporary congestion queue is changedby the routine at block 126, the queue's timer may already be in themiddle of counting up to the prior delay time. In the preferredembodiment, rather than resetting the timer when the delay time ischanged at block 126, the timer is allowed to continue to run so thatany time counted toward the prior delay time still counts toward the newdelay time. Thus, if the new delay time is longer than the current timercount, the timer continues to run until it reaches the new delay time,at which point the next message in the queue is sent. If the new delaytime is shorter than the current timer count, the next message in thequeue is sent immediately and the counter begins to count again up tothe new delay time. From block 126 or block 122 the routine proceeds todecision block 130.

[0062] At decision block 130, the routine determines whether or not themessage packet which caused the reply was rejected. If the messagepacket was not rejected, then the routine ends at a block 136. If themessage packet was rejected, then the message packet is placed on thefront of the temporary congestion queue for the congested component.Block 132 illustrates that a message packet sent from the front of atemporary congestion queue to the receiver will be returned to the frontof the temporary congestion queue if it is rejected by the receiver.This keeps the messages in the queue in a certain order. After block132, the routine ends at block 136.

[0063]FIG. 5D shows the message packet sending routine of a temporarycongestion queue. The routine starts at a block 140 and proceeds to ablock 142 where a delay timer is started. At a decision block 144, atthe end of the delay time the routine determines if there are anymessages in the queue to be sent. If the queue is empty, the routineproceeds to block 148 where the queue is ended. If there are messages inthe queue to be sent, the routine proceeds to block 146 where it sendsthe next message in the queue. The routine then proceeds back to block142 to restart the delay timer.

[0064] With reference to FIGS. 5A to 5D, some of the differences betweenpoint congestion and the other types of congestion can be explained. Asdescribed above, in FIG. 5A at decision block 104, the routinedetermines if the message packet address includes any congestedcomponents along its path. If congestion is present, then the routinecontinues to a block 108 where the message packet is placed on the endof the queue for the specified congested component. This part of theroutine is effective for congestion occurring at a particular node,application, and/or channel, because those parts of the path throughwhich the message packet is sent are part of the address known at thesender. In the case of point congestion, however, by definition a pointcomponent to which the message will be sent is not yet part of theaddress and is thus unknown by the sender when it sends the message.

[0065] For example, referring to FIG. 1, if the home messaging switch 23is the sender, the output messaging switch 44 is the receiver, and thebase stations 48 and 49 are the possible “points,” then the point towhich the message packet will be sent is not known until the “locate”signal, as described above, is sent out. As described above, when amessage packet reaches the output messaging switch 44, it determines towhich base station 48 or 49 (the points) to send the message packet byusing a locate signal to verify which base station (point) is closer tothe paging unit. Thus, until the output messaging switch 44 (thereceiver) receives the message packet, the base station (point) to whichthe message packet will be sent is unknown. Thus, when the homemessaging switch 23 (the sender) has a message packet to be sent to theoutput messaging switch 44 (the receiver), it cannot place the messagepacket in a particular temporary congestion queue for a particularpoint, because the home messaging switch 23 (the sender) does not yetknow the particular point to which the message packet will eventually besent.

[0066] By way of contrast, once a message packet reaches the receiverand point congestion occurs, then when the reply is sent back to thesender the reply specifies the point that is congested. Then, as shownin FIG. 5C, at decision block 130, when a message packet is rejected dueto point congestion, just as for any other type of congestion, themessage packet may be put on the temporary congestion queue created forthat particular point. Thus, although original message packets cannot beplaced on a temporary congestion queue for particular point, once theyare rejected from a particular point, they can be.

[0067] Another difference between point congestion and other types ofcongestion can be explained with reference to the routines of FIGURES SCand 5D. When message packets are sent from a temporary congestion queueaccording to the routine in FIG. 5D, a reply is sent back from thereceiver and is processed by the sender according to the routine of FIG.5C. When a message packet that was sent from a temporary congestionqueue is rejected, according to block 132 of FIG. 5C, the message isplaced on the beginning of the temporary congestion queue for thecomponent from which it was rejected. For nodes, applications orchannels, the components to which the message packet is sent do notchange and thus if a message packet is sent from a temporary congestionqueue for one of those components and then is rejected because thatcomponent is still congested, the message packet will be placed back onthe beginning of the same temporary congestion queue from which it wassent. If the message is accepted without congestion, then the congestionqueue for that component can be ended.

[0068] In the case of point congestion, however, the message packet sentfrom a temporary congestion queue for a particular point is not alwayssent to the same point component, and thus the reply may state that themessage was rejected or accepted at a different point. Referring againto FIG. 1, if the points are base stations 48 and 49, when a messagepacket is received at output messaging switch 44 (the receiver), thereceiver determines from which base station 48 or 49 (the points) totransmit the message packet by using a “locate” signal as describedabove. Thus, even if a message packet is sent from a temporarycongestion queue in home messaging switch 23 (the sender), which is forparticular first point (e.g., base station 48 which the paging unit wascloser to before), a reply message from the receiver may come backstating that the message was rejected or accepted on a different point(e.g., base station 49 which the paging unit is closer to now). If themessage is rejected at a different point, rather than being put back inthe temporary congestion queue from which it was sent, the messagepacket is placed on the front of the temporary congestion queue for thepoint from which it was most recently rejected. The instructions in thereply (e.g., delay time) are also applied only to the temporarycongestion queue for the point from which the message was most recentlyrejected.

[0069] To further illustrate the working of the invention, FIGS. 6 and 7contain a set of illustrative examples. FIG. 6 illustrates a time lineof message packets and replies between the home messaging switch 23 andthe output messaging switch 36. For purposes of illustrating the timercounts in FIG. 7, a vertical time line on the far left of FIG. 6indicates the “time of event” for messages and replies. As also shown inFIG. 6, new messages coming in to home messaging switch 23 are indicatedby a left to right arrow into the vertical line labeled home messagingswitch 23. As described below, times T1 to T8, that correspond to FIG.7, are also marked in FIG. 6. Messages that are queued in the temporarycongestion queue for channel CH1 are so indicated with a label to theright of the home messaging switch 23 line in FIG. 6. Also, messagessent from the temporary congestion queue for channel CH1 are indicatedin the same manner as newly sent messages. Each of the shown messages Ato F are labeled with an address of the components they will passthrough, which in this case is merely a node and channel.

[0070] Once a message travels from home messaging switch 23 to outputmessaging switch 36, as indicated by a left to right arrow in FIG. 6,then a reply from the output messaging switch 36 back to the homemessaging switch 23 is indicated by a right to left return arrow. Thecontent of the reply is indicated at the origin of the reply arrow tothe right of output messaging switch 36 line. The reply indicates thatthe message was either accepted or rejected, the message path, andwhether there is congestion and, if so, what the delay time should befor the temporary congestion queue for the congested component.

[0071] In addition to the temporary congestion queues that are startedin the home messaging switch 23 when a particular component becomescongested, in the preferred embodiment some permanent queues may alsoexist in the output messaging switch 36. The permanent queues in theoutput messaging switch 36 are for particular components and function aspart of the normal operation of the components. For example, in theexample of FIG. 6, channels CH1 and CH2 have permanent queues in theoutput messaging switch 36. These permanent queues may be part of thememory ME7.

[0072] The permanent queues do not alter the congestion control methodsdescribed above. When channels CH1 and CH2 have permanent queues,messages that are sent to them may be placed on the permanent queuesrather than being broadcast immediately, and in such cases a reply maybe sent to the sender indicating that the message was accepted at thechannel, just as if no permanent queue existed. This also provides anexample of how congestion control can be implemented before congestionactually occurs, in that congestion control can be activated for achannel before the permanent queue actually fills up. Examples ofpossible trigger levels at which congestion control is activated can bea certain number of messages in the permanent queue, or the rate atwhich the permanent queue is filling up.

[0073] As will be described below, the trigger level for activatingcongestion control in FIGS. 6 and 7 occurs when the permanent queue isall the way filled. When the channel is able to process a message fromthe permanent queue, the processed message is deleted from the queue. InFIG. 6, processed messages that are deleted from the permanent queue areindicated by a left to right arrow from the line for the outputmessaging switch 36. The contents of the temporary congestion queue forchannel CH1, and the contents of the permanent queues for channels CH1and CH2, are shown for times T1 to T8 in FIG. 7. Although for purposesof illustration each queue in FIG. 7 is shown to hold only threemessages, in actual practice queues can hold as many messages as thememory of the system allows. Also shown in FIG. 7 are the current timercount and the set delay time for the temporary congestion queue forchannel CH1.

[0074] As shown in FIGS. 6 and 7, at time T1, no messages have beenentered into the home messaging switch 23. Then new messages A and Barrive at node N4 in the home messaging switch 23 and are sent tochannel CH1 in node N7 in output messaging switch 36 and are acceptedinto the permanent queue for channel CH1 in memory ME7, as shown at timeT2 in FIG. 7.

[0075] As shown in FIG. 6, after time T2, a new message C arrives and isaccepted into the permanent queue for channel CH1, but with a returnmessage that indicates that congestion has started and that a delay oft=100 should be implemented for all messages directed to channel CH1 innode N7. In this example, the trigger level for the output messagingswitch 36 indicating congestion is when the permanent queue for channelCH1 is filled. Once the reply message from message C is received by homemessaging switch 23, a temporary congestion queue is created formessages addressed to channel CH1 in node N7. The delay time is set tot=100 as instructed, and the queue timer that is part of clock CL4begins to count up from 0 until it reaches the set delay time, at whichpoint the message on the front of the queue will be sent to channel CH1in node N7. For purposes of illustration in FIG. 7, at time T3, a timeof t=20, as shown in the vertical time line of FIG. 6, has elapsed, sothe timer shows t=20.

[0076] As shown in FIG. 6, after time T3, a new message D arrivesaddressed to channel CH1 in node N7, and so becomes the first message tobe placed in the new temporary congestion queue for channel CH1 in nodeN7. This is shown in FIG. 7 at time T4. As shown in FIG. 6, after timeT4, the timer reaches the delay time (having elapsed a total of t=100)and so the temporary congestion queue for channel CH1 attempts to sendthe message on the front of temporary congestion queue (message D) tochannel CH1 in node N7. The reply as seen in FIG. 6 indicates thatmessage D is rejected with congestion, and a delay time of t=150 isgiven. Thus, message D is placed back on the front of the temporarycongestion queue for channel CH1. This is shown in FIG. 7 for time T5,and the delay time is set to t=150. However, the timer in this case,rather than starting to count from when the reply is received, startscounting from when message D was sent. This occurs because the timer hadalready started counting a new t=100 from when message D was sent. Sincethe timer only stops counting when it reaches the delay time, when thereply from message D resets the delay time from t=100 to t=150, thetimer that had already started counting but had not yet reached t=100,simply continues counting until it now reaches t=150.

[0077] As also shown in FIG. 6, after time T4, channel CH1 processesmessage A, thus removing message A from the permanent queue for channelCH1. The removal of message A allows messages B to C to move forward oneplace in the permanent queue for channel CH1, as seen at time T5 in FIG.7. As shown in FIG. 6, also occurring after time T4, is the arrival ofnew messages E and F. As shown in FIG. 7 at time T5, message E,addressed to channel CH1 in node N7, is put on the temporary congestionqueue behind message D. Message F, addressed to channel CH2 in node N7,is the first message to channel CH2 and is accepted without congestionand placed on the permanent queue for channel CH2, as can be seen attime T5 in FIG. 7.

[0078] As shown in FIG. 6, after time T5, the timer for the temporarycongestion queue for channel CH1 reaches the delay time (having elapseda total of t=150) and so the temporary congestion queue attempts to sendthe message on the front of the queue (message D) to channel CH1 in nodeN7. The reply as seen in FIG. 6 indicates that message D is acceptedwith congestion, and a new delay time of t=90 is given. Message D isthus placed on the back of the permanent queue for channel CH1, as canbe seen at time T6 in FIG. 7.

[0079] As shown in FIG. 6, after time T6, channel CH1 processes messagesB, C, and D, and so those are removed from the permanent queue forchannel CH1, as can be seen at time T7 in FIG. 7. Also occurring aftertime T6, is that the timer for the temporary congestion queue forchannel CH1 reaches the delay time (having elapsed a total of t=90) andso the temporary congestion queue sends the message on the front of thequeue (message E) to channel CH1 in node N7. The reply as seen in FIG. 6indicates that message E is accepted without congestion, and so thetemporary congestion queue for channel CH1 in node N7 is deletedaltogether along with the delay time setting. Message E is thus placedon the permanent queue for channel CH1, as can be seen at time T7 inFIG. 7.

[0080] As shown in FIG. 6, after time T7, channel CH2 processes messageF and channel CH1 processes message E, thus clearing the permanent queuememories for channels CH1 and CH2. This is shown in FIG. 7 at time T8.

[0081] While the preferred embodiment of the invention has beenillustrated and described, it will be apparent that various changes canbe made therein without departing from the spirit and scope of theinvention. For example, although methods of congestion control areillustrated for node, application, channel and point types ofcongestion, the same methods can be implemented for any area or functionin the messaging system where congestion may occur.

The embodiments of the invention in which an exclusive property orprivilege is claimed are defined as follow:
 1. In a wireless messagingsystem having a plurality of nodes, a method of controlling congestionof message packets being sent between said nodes of the system, whereina node that is sending message packets is designated as a sender, a nodethat is receiving message packets is designed as a receiver, saidreceiver having at least one component required for processing themessage packets, the method comprising the steps of having said receiverreply to the sender for a message packet that is sent, the replyspecifying: (a) whether or not congestion is indicated; (b) ifcongestion is indicated, the component at which congestion is occurring;(c) if congestion is indicated, a delay time the sender should waitbefore sending a message packet to the congested component.
 2. Themethod of claim 1 , wherein the wireless messaging system furtherincludes a memory area for a congestion queue, wherein upon receiving areply indicating that there is congestion in a component, the senderplaces message packets addressed to the congested component in thecongestion queue.
 3. The method of claim 2 , wherein the congestionqueue includes a timer with a set time for determining the delay beforesending a message packet to the congested component.
 4. The method ofclaim 2 , wherein the sender examines the address of each message packetbefore sending it to the receiver and places any messages addressed to acongested component on the congestion queue for the component.
 5. Themethod of claim 4 , wherein if a message packet is addressed to morethan one congested component, the sender ranks the congested componentsand places the message packet on the congestion queue for the componentwith the highest ranking.
 6. The method of claim 1 , wherein a congestedcomponent may be an application.
 7. The method of claim 1 , wherein acongested component may be a channel.
 8. The method of claim 1 , whereina congested component may be a point.
 9. The method of claim 2 , whereina message that is rejected from a congested component is placed on thecongestion queue for that component.
 10. The method of claim 9 , whereinthe rejected message is placed on the front of the congestion queue. 11.The method of claim 3 , wherein the set time is determined by the settime that is specified in the most recent reply from the receiver. 12.The method of claim 11 , wherein the timer count is not reset when theset time is changed.
 13. The method of claim 1 , wherein in the case ofcertain types of congestion, rather than the receiver including a delaytime in the reply, the sender determines the delay time.
 14. The methodof claim 13 , wherein the sender determines the delay time by using analgorithm that dictates: (a) each time a message is rejected from thereceiver, the delay time is doubled, up to some maximum delay; (b) eachtime a message is accepted at the receiver, the delay time is halved,down to some minimum delay.
 15. The method of claim 2 , wherein thecongestion queue is temporary.
 16. The method of claim 15 , wherein uponreceiving a reply indicating there is no longer congestion at apreviously congested component, the sender sends all remaining messagepackets in the congestion queue and then de-allocates the memory areathat was designated for the congestion queue.
 17. The method of claim 15, wherein the congestion queue includes a timer with a set time fordetermining the delay between sending message packets to the congestedcomponent.
 18. The method of claim 17 , wherein if at the end of the settime there are no message packets in the congestion queue, the senderde-allocates the memory area that was designated for the congestionqueue.
 19. In a wireless messaging system, a method of congestioncontrol wherein components of the wireless messaging system sendmessages to one another and communicate with each other regarding thestatus of congestion with regard to the processing of the messages, acomponent being congested when it has insufficient resources to processadditional messages, a congested component causing a congestion queue tobe created to queue subsequent messages to the congested component,messages being sent from the congestion queue to the congested componentat a rate that is variable.
 20. The method of claim 1 , wherein thevariable rate at which messages are sent from the queue is specified bya communication from the congested component.
 21. The method of claim 19, wherein the queue for the congested component is created in a memoryarea of a component that attempted to send a message to the congestedcomponent.
 22. The method of claim 21 , wherein the congestion queue iscreated in response to a reply from the congested component indicatingthat congestion is occurring.
 23. In a wireless messaging system havingcomponents for sending and receiving messages, a method for controllingcongestion of messages being sent through the wireless messaging system,the method comprising the steps of: (a) determining if congestion isoccurring at a component that is receiving messages; and (b) in responseto congestion, the congested component sends a reply to a component thathad sent a message to the congested component, the reply indicating theidentity of the congested component and a rate at which to send messagesto the congested component.
 24. The method of claim 23 , wherein therate at which messages are sent to the congested component may bevaried.
 25. The method of claim 23 , wherein the wireless messagingsystem further includes a memory area for congestion queues, whereinupon receiving a reply indicating that a component is congested, thecomponent receiving the reply causes messages addressed to the congestedcomponent to be placed in a congestion queue.
 26. The method of claim 25, wherein the congestion queue is created in response to the replyindicating that congestion is occurring at a previously uncongestedcomponent.
 27. In a wireless messaging system having components forsending and receiving messages, the components that are sending messagesbeing a source of messages, the components that are receiving messagescomprising areas within the wireless messaging system where congestionmay occur, a method of controlling congestion within the wirelessmessaging system, the method comprising the steps of: (a) determiningwhen congestion is occurring in an area of the wireless messagingsystem; (b) determining a source of the messages that are being sent tothe congested area; and (c) supplying the source of the messages with arate at which to send future messages to the congested area.
 28. Themethod of claim 27 , wherein the rate at which messages are sent to thecongested area can be varied.
 29. The method of claim 28 , wherein therate at which to send messages to the congested area is determined by acomponent within the congested area.
 30. The method of claim 29 ,wherein the rate at which to send messages to the congested area issupplied to the source as part of a reply sent from the congested area.31. The method of claim 27 , wherein the wireless messaging systemfurther includes a memory area for a congestion queue, wherein thesource places messages that are addressed to the congested area in thecongestion queue, from which messages are sent to the congested area atthe specified rate.